开篇
对于一个程序员(码农)来说,初学编程的第一句代码往往就是输出Hello World,这句跟随我从Java,C++,HTML5,JS到Python的经典语句,就让我们来了解一下它的魅力吧。
由来
Hello World 中文意思是『你好,世界』。因为《The C Programme Language》中使用它做为第一个演示程序,非常著名,所以后来的程序员在学习编程或进行设备调试时延续了这一习惯。
“Hello, world”程序是指在计算机屏幕上输出“Hello,world”这行字符串的计算机程序,“hello, world”的中文意思是“你好,世界。”。
这个例程在Brian Kernighan 和Dennis M. Ritchie合著的《The C Programme Language》使用而广泛流行。因为它的简洁,实用,并包含了一个该版本的C程序首次出现在1974年Brian Kernighan所撰写的《Programming in C: A Tutorial》:1
printf("hello, world\n");
实际上将“Hello”和“World”一起使用的程序最早出现于1972年,出现在贝尔实验室成员Brian Kernighan撰写的内部技术文件《Introduction to the Language B》之中:1
2
3
4
5
6
7main(){
extern a,b,c;
putchar(a);putchar(b);putchar(c);putchar('!*n');
}
a'hell';
b'o,w';
c'orld';
书写标准
最初的”hello, world”打印内容有个标准,即全小写,有逗号,逗号后空一格,且无感叹号。不过沿用至今,完全遵循传统标准形式的反而很少出现。
源代码合集
VB
1 | Module MainFrm |
C
1 | #include <stdio.h> |
Swift
1 | print("Hello, World!") |
Go
1 | package main |
BATCH
1 | @echo off |
Java
1 | public class HelloWorld |
C++
1 | #include <iostream> |
C#
1 | namespace HelloWorld |
PHP
1 | echo "Hello, World!"; |
JavaScript
1 | console.log("Hello, World!") |
Python 2
1 | print "Hello, World!" |
Python 3
1 | print("Hello, World!") |
LaTeX
1 | \documentclass{article} |
Mathematica
方法一:基于Wolfram 底层语言(进入表达式界面使用)
Mathematica 1
Cell["Hello, World!"]
方法二:直接使用数学输出函数
Mathematica 1
CellPrint[Cell["Hello, World!"]]
Ruby
1 | def hello() |
Kotlin
1 | fun main(args: Array<String>) { |
其他方式
Hello World在银河一号上跑(为了测试环境配置)
1 | import java.util.Random; |
- 运行结果:
结果用Intellij IDEA演示
该代码利用了伪随机值
颜表情版js
1 | ゚ω゚ノ= /`m´)ノ ~┻━┻ //*´∇`*/ ['_']; o=(゚ー゚) =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ,゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ,゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + ((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; (゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\'; (゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];(゚Д゚) [゚o゚]='\"';(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+(゚Д゚)[゚o゚]+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚Θ゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) - (゚Θ゚))+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚o゚]) (゚Θ゚)) ('_'); |
- 运行演示:
结果用谷歌浏览器演示
该代码利用了代码转换器(输入js代码生成颜表情版js代码)
代码转换器:点我进入
自制一台显示器分辨率为 32x16 像素的虚拟计算机来输出 HELLO, WORLD
- 演示图片
结果用图片演示
该代码使用虚拟机执行汇编语言显示,如下图所示:
JIT版本
1 | #include <stdio.h> |
- 运行结果:
1 | # gcc -o t test.c |
这个代码在64位 x86 的ubuntu上,使用gcc 可以编译执行。(理论上说,在其他linux系统上也可以执行的,但必须得是64位x86平台,换成32位或者arm是不行的)
基本原理就是运行时生成打印的函数,然后通过函数指针去调用它。更多关于JIT的知识,可以看这里:JVM杂谈之JIT
总结
还有很多的方式我就不一一列举了,有兴趣的可以在下方的参考资料里了解更多叹为观止的方式,在了解了这么多方式的Hello World之后,我只想说编程语言是博大精深的…